home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok85 / reqtools / reqtfilereq.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  97 lines

  1. (*---------------------------------------------------------------------------
  2.   :Program.    ReqTFileReq.mod
  3.   :Contents.   Simple Benutzung des ReqTools Filerequesters
  4.   :Author.     Frank Lömker
  5.   :Copyright.  Public Domain
  6.   :Language.   Modula-2
  7.   :Translator. M2Amiga V4.0d
  8.   :Support.    Basiert zu großen Teilen auf ARPFileReq von Bernd Preußing
  9.   :Imports.    ReqTools 2.0m [kai]
  10.   :History.    V1.0, [Frank Lömker] 24-Feb-92
  11.   :History.    V1.1, [Frank Lömker] 03-Jul-92 Requester nicht freigegeben
  12.   :History.    V1.2, [Frank Lömker] 10-Aug-92 Save-Mode, Patternrückgabe,
  13.   :History.                                   LockWindow
  14.   :Bugs.       keine bekannt
  15. ---------------------------------------------------------------------------*)
  16. IMPLEMENTATION MODULE ReqTFileReq;
  17.  
  18. (*$ LargeVars:=FALSE StackParms:=FALSE RangeChk:=FALSE OverflowChk:=FALSE
  19.     ReturnChk:=FALSE StackChk:=FALSE EntryClear:=FALSE NilChk:=FALSE
  20.     Volatile:=FALSE *)
  21.  
  22. FROM UtilityD IMPORT tagEnd;
  23. FROM SYSTEM   IMPORT ADR,ADDRESS,TAG,LONGSET;
  24. FROM String   IMPORT Copy, LastPos, Length, Concat;
  25. IMPORT rt:ReqTools;
  26.  
  27. TYPE str110=ARRAY [0..110] OF CHAR;
  28.      str110Ptr=POINTER TO str110;
  29.  
  30. VAR filereq:rt.FileRequesterPtr;
  31.     tagbuf:ARRAY [0..5] OF LONGINT;
  32.     File, Dir: str110;
  33.  
  34. PROCEDURE GetPath(VAR f,d:ARRAY OF CHAR);
  35. VAR pos,i:INTEGER;
  36. BEGIN
  37.   Copy(d,f);
  38.   pos:=LastPos(f,1000,'/');
  39.   IF pos<0 THEN
  40.     pos:=LastPos(f,1000,':');
  41.   END;
  42.   IF pos>=0 THEN
  43.     IF d[pos]=':' THEN d[pos+1]:=0C ELSE d[pos]:=0C END;
  44.     INC(pos);
  45.     FOR i:=pos TO Length(f) DO
  46.       f[i-pos]:=f[i]
  47.     END;
  48.     f[i]:=0C;
  49.   ELSE
  50.     d[0]:=0C
  51.   END;
  52. END GetPath;
  53.  
  54. PROCEDURE FileReq (VAR FName:ARRAY OF CHAR; Window:ADDRESS; Title:ARRAY OF CHAR;
  55.                    x,y:INTEGER;VAR pattern:ARRAY OF CHAR;save:BOOLEAN):BOOLEAN;
  56. VAR ok,pat:BOOLEAN;
  57. BEGIN
  58.   ok:=FALSE; pat:=FALSE;
  59.   filereq := rt.AllocRequestA (rt.TypeFileReq, NIL);
  60.   IF filereq # NIL THEN
  61.     Copy (File,FName);
  62.     GetPath (File,Dir);
  63.     IF Length (pattern)>0 THEN
  64.       pat:=TRUE;
  65.       rt.ChangeReqAttrA (filereq,TAG(tagbuf,rt.fiDir,ADR(Dir),
  66.                                         rt.fiMatchPat,ADR(pattern),tagEnd));
  67.       filereq^.flags:=filereq^.flags+LONGSET{rt.fReqPatGad,rt.fReqNoBuffer};
  68.     ELSE
  69.       rt.ChangeReqAttrA (filereq,TAG(tagbuf,rt.fiDir,ADR(Dir),tagEnd));
  70.       INCL (filereq^.flags,rt.fReqNoBuffer);
  71.     END;
  72.     IF save THEN INCL (filereq^.flags,rt.fReqSave); END;
  73.     IF x>=0 THEN filereq^.leftOffset:=x; END;
  74.     IF y>=0 THEN filereq^.topOffset:=y; END;
  75.     IF (x>=0) OR (y>=0) THEN filereq^.reqPos:=rt.ReqPosTopLeftScr; END;
  76.     IF rt.FileRequest (filereq, ADR(File),ADR(Title),
  77.                 TAG(tagbuf,rt.Window,Window,rt.LockWindowTag,TRUE,tagEnd)) THEN
  78.       Dir:=str110Ptr(filereq^.dir)^;
  79.       IF (Length(Dir)>0) AND (Dir[Length(Dir)-1]#':') THEN
  80.         Concat(Dir,'/');
  81.       END;
  82.       Concat(Dir,File);
  83.       Copy(FName,Dir);
  84.       IF pat THEN
  85.         Copy (pattern,str110Ptr(filereq^.matchPat)^);
  86.       END;
  87.       ok:=TRUE;
  88.     END;
  89.     rt.FreeRequest (filereq);
  90.   END;
  91.   RETURN ok;
  92. END FileReq;
  93.  
  94. BEGIN
  95.   NoPat:="";
  96. END ReqTFileReq.mod
  97.